@tempoxyz/id 0.0.1 → 0.0.2

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 (120) hide show
  1. package/dist/app/server/.vite/manifest.json +65 -65
  2. package/dist/app/server/assets/Grant-D_tun0mF.js.map +1 -1
  3. package/dist/app/server/assets/authorize-DXYo-K2n-B-6vqhvc.js +56 -0
  4. package/dist/app/server/assets/authorize-DXYo-K2n-B-6vqhvc.js.map +1 -0
  5. package/dist/app/server/assets/core-FSS9-r35.js +56 -0
  6. package/dist/app/server/assets/core-FSS9-r35.js.map +1 -0
  7. package/dist/app/server/assets/default-u_dwuiYb-Bby14ucv.js +2 -0
  8. package/dist/app/server/assets/{default-u_dwuiYb-DOrMMcg9.js.map → default-u_dwuiYb-Bby14ucv.js.map} +1 -1
  9. package/dist/app/server/assets/{dist-CoH0hD1s.js → dist-B9KiBJYw.js} +2 -2
  10. package/dist/app/server/assets/{dist-CoH0hD1s.js.map → dist-B9KiBJYw.js.map} +1 -1
  11. package/dist/app/server/assets/{dist-DcICI3fd.js → dist-CU1NXSiz.js} +2 -2
  12. package/dist/app/server/assets/{dist-DcICI3fd.js.map → dist-CU1NXSiz.js.map} +1 -1
  13. package/dist/app/server/assets/dist-CetH4JSY.js +1 -0
  14. package/dist/app/server/assets/{effect-QlVUlMFu-mXPkuQTb.js → effect-QlVUlMFu-Cm-eTtaO.js} +2 -2
  15. package/dist/app/server/assets/{effect-QlVUlMFu-mXPkuQTb.js.map → effect-QlVUlMFu-Cm-eTtaO.js.map} +1 -1
  16. package/dist/app/server/assets/factory-g3i_Ffi5.js +5 -0
  17. package/dist/app/server/assets/{factory-dvoOlKer.js.map → factory-g3i_Ffi5.js.map} +1 -1
  18. package/dist/app/server/assets/get-id-field-BpOAoqqI.js +6 -0
  19. package/dist/app/server/assets/get-id-field-BpOAoqqI.js.map +1 -0
  20. package/dist/app/server/assets/{index-CLddUTqr-CC33CMvS.js → index-CLddUTqr-CmgkbWi9.js} +2 -2
  21. package/dist/app/server/assets/{index-CLddUTqr-CC33CMvS.js.map → index-CLddUTqr-CmgkbWi9.js.map} +1 -1
  22. package/dist/app/server/assets/{index-DZEfthgZ-Ec2MMQ_e.js → index-DZEfthgZ-BnPmps9O.js} +2 -2
  23. package/dist/app/server/assets/{index-DZEfthgZ-Ec2MMQ_e.js.map → index-DZEfthgZ-BnPmps9O.js.map} +1 -1
  24. package/dist/app/server/assets/kysely-adapter-B8VoPArC.js +1 -0
  25. package/dist/app/server/assets/{schema-check-oLqvHR8y.js → schema-check-Bgwl1v0_.js} +2 -2
  26. package/dist/app/server/assets/{schema-check-oLqvHR8y.js.map → schema-check-Bgwl1v0_.js.map} +1 -1
  27. package/dist/app/server/assets/{sury-CWZTCd75-CDaOS2oM.js → sury-CWZTCd75-Bd_PzqCV.js} +2 -2
  28. package/dist/app/server/assets/{sury-CWZTCd75-CDaOS2oM.js.map → sury-CWZTCd75-Bd_PzqCV.js.map} +1 -1
  29. package/dist/app/server/assets/{valibot--1zFm7rT-CIKoH3MS.js → valibot--1zFm7rT-Dd2aEhWG.js} +2 -2
  30. package/dist/app/server/assets/{valibot--1zFm7rT-CIKoH3MS.js.map → valibot--1zFm7rT-Dd2aEhWG.js.map} +1 -1
  31. package/dist/app/server/assets/{valibot-D_HTw1Gn-BdPyLkXt.js → valibot-D_HTw1Gn-C1l3va6F.js} +2 -2
  32. package/dist/app/server/assets/{valibot-D_HTw1Gn-BdPyLkXt.js.map → valibot-D_HTw1Gn-C1l3va6F.js.map} +1 -1
  33. package/dist/app/server/assets/{zod-Bwrt9trS-BezI5Gi1.js → zod-Bwrt9trS-Dry2w0in.js} +2 -2
  34. package/dist/app/server/assets/{zod-Bwrt9trS-BezI5Gi1.js.map → zod-Bwrt9trS-Dry2w0in.js.map} +1 -1
  35. package/dist/app/server/assets/{zod-DSgpEGAE-DZ7M_Q33.js → zod-DSgpEGAE-BZMP86UA.js} +2 -2
  36. package/dist/app/server/assets/{zod-DSgpEGAE-DZ7M_Q33.js.map → zod-DSgpEGAE-BZMP86UA.js.map} +1 -1
  37. package/dist/app/server/index.js +35 -35
  38. package/dist/app/server/index.js.map +1 -1
  39. package/dist/client/Auth.d.ts +1 -1
  40. package/dist/client/Auth.d.ts.map +1 -1
  41. package/dist/client/Auth.js.map +1 -1
  42. package/dist/client/Decorator.d.ts +3 -1
  43. package/dist/client/Decorator.d.ts.map +1 -1
  44. package/dist/client/Decorator.js +1 -0
  45. package/dist/client/Decorator.js.map +1 -1
  46. package/dist/client/actions/passkey.d.ts +63 -2
  47. package/dist/client/actions/passkey.d.ts.map +1 -1
  48. package/dist/client/actions/passkey.js +121 -3
  49. package/dist/client/actions/passkey.js.map +1 -1
  50. package/dist/internal/Apps.d.ts +14 -0
  51. package/dist/internal/Apps.d.ts.map +1 -1
  52. package/dist/internal/Apps.js +14 -2
  53. package/dist/internal/Apps.js.map +1 -1
  54. package/dist/internal/Auth.d.ts +7 -0
  55. package/dist/internal/Auth.d.ts.map +1 -1
  56. package/dist/internal/Auth.js +2 -1
  57. package/dist/internal/Auth.js.map +1 -1
  58. package/dist/internal/Authorize.d.ts.map +1 -1
  59. package/dist/internal/Authorize.js +13 -13
  60. package/dist/internal/Authorize.js.map +1 -1
  61. package/dist/internal/ErrorResponse.d.ts +5 -0
  62. package/dist/internal/ErrorResponse.d.ts.map +1 -1
  63. package/dist/internal/ErrorResponse.js +8 -0
  64. package/dist/internal/ErrorResponse.js.map +1 -1
  65. package/dist/internal/KeyAuthorization.d.ts.map +1 -1
  66. package/dist/internal/KeyAuthorization.js +28 -28
  67. package/dist/internal/KeyAuthorization.js.map +1 -1
  68. package/dist/internal/Owner.d.ts +16 -0
  69. package/dist/internal/Owner.d.ts.map +1 -1
  70. package/dist/internal/Owner.js.map +1 -1
  71. package/dist/internal/Passkey.d.ts +66 -4
  72. package/dist/internal/Passkey.d.ts.map +1 -1
  73. package/dist/internal/Passkey.js +66 -30
  74. package/dist/internal/Passkey.js.map +1 -1
  75. package/dist/internal/Privy.d.ts +27 -0
  76. package/dist/internal/Privy.d.ts.map +1 -1
  77. package/dist/internal/Privy.js +82 -0
  78. package/dist/internal/Privy.js.map +1 -1
  79. package/dist/internal/TempoAccount.d.ts +57 -0
  80. package/dist/internal/TempoAccount.d.ts.map +1 -1
  81. package/dist/internal/TempoAccount.js +118 -5
  82. package/dist/internal/TempoAccount.js.map +1 -1
  83. package/dist/internal/owners/Privy.d.ts.map +1 -1
  84. package/dist/internal/owners/Privy.js +11 -2
  85. package/dist/internal/owners/Privy.js.map +1 -1
  86. package/package.json +1 -1
  87. package/src/api/account.ts +140 -103
  88. package/src/api/authenticate.ts +48 -51
  89. package/src/api/authorize.ts +35 -36
  90. package/src/api/device.ts +20 -23
  91. package/src/api/health.ts +1 -2
  92. package/src/api/lib/AccountStep.ts +75 -0
  93. package/src/api/lib/Auth.ts +6 -0
  94. package/src/api/lib/Cors.ts +3 -0
  95. package/src/api/lib/KeySigner.ts +1 -1
  96. package/src/api/oauth.ts +23 -22
  97. package/src/client/Auth.ts +1 -0
  98. package/src/client/Decorator.ts +6 -1
  99. package/src/client/actions/passkey.ts +197 -3
  100. package/src/internal/Apps.ts +26 -2
  101. package/src/internal/Auth.ts +4 -0
  102. package/src/internal/Authorize.ts +13 -15
  103. package/src/internal/ErrorResponse.ts +10 -0
  104. package/src/internal/KeyAuthorization.ts +28 -31
  105. package/src/internal/OpenApi.ts +35 -0
  106. package/src/internal/Owner.ts +16 -0
  107. package/src/internal/Passkey.ts +99 -34
  108. package/src/internal/Privy.ts +128 -0
  109. package/src/internal/TempoAccount.ts +221 -7
  110. package/src/internal/owners/Privy.ts +19 -6
  111. package/dist/app/server/assets/authorize-DXYo-K2n-rmQQ42x1.js +0 -56
  112. package/dist/app/server/assets/authorize-DXYo-K2n-rmQQ42x1.js.map +0 -1
  113. package/dist/app/server/assets/core-BBrZXfrB.js +0 -56
  114. package/dist/app/server/assets/core-BBrZXfrB.js.map +0 -1
  115. package/dist/app/server/assets/default-u_dwuiYb-DOrMMcg9.js +0 -2
  116. package/dist/app/server/assets/dist-CR6FW-yS.js +0 -1
  117. package/dist/app/server/assets/factory-dvoOlKer.js +0 -5
  118. package/dist/app/server/assets/get-id-field-OwLpfjj2.js +0 -6
  119. package/dist/app/server/assets/get-id-field-OwLpfjj2.js.map +0 -1
  120. package/dist/app/server/assets/kysely-adapter-B8tQwTcu.js +0 -1
@@ -232,7 +232,7 @@ const sent = z.object({
232
232
  /** The Tempo Account. Defaults to the account selected at sign-in, or the oldest. */
233
233
  account: z.optional(address).meta({
234
234
  description:
235
- 'The Tempo Account the key acts for. Defaults to the account selected at sign-in, or else the oldest account.',
235
+ 'The Tempo Account that the key acts for. Defaults to the account selected for the app, else the oldest.',
236
236
  examples: ['0x9a073914db0d149375ac2b7fbb72c68c0780fb5f'],
237
237
  }),
238
238
  /** The access key's address. `publicKey` may stand in for it. */
@@ -249,7 +249,7 @@ const sent = z.object({
249
249
  /** Unix seconds. Defaults to a year from now, for a first-party app. */
250
250
  expiry: z.optional(z.number()).meta({
251
251
  description:
252
- 'When the key expires, in Unix seconds. Defaults to one year after the request for a first-party app, and a third-party app must name it.',
252
+ 'When the key expires, in Unix seconds. Defaults to one year for a first-party app, and is required for a third-party app.',
253
253
  examples: [1893456000],
254
254
  }),
255
255
  /** Defaults to `secp256k1`. */
@@ -266,11 +266,11 @@ const sent = z.object({
266
266
  z.object({
267
267
  limit: bigint({ examples: ['0x989680'] }).meta({
268
268
  description:
269
- 'The most of the token the key may spend, in base units, as a hex quantity. Applies per period when `period` is set.',
269
+ 'The maximum amount of the token that the key can spend, in base units, as a hex quantity. With `period`, the maximum for each period.',
270
270
  }),
271
271
  period: z.optional(z.number()).meta({
272
272
  description:
273
- 'Seconds after which the limit resets. Omitted or 0 for a one-time limit.',
273
+ 'The seconds after which the limit resets. Absent or 0 for a one-time limit.',
274
274
  examples: [86400],
275
275
  }),
276
276
  token: address.meta({
@@ -283,12 +283,12 @@ const sent = z.object({
283
283
  )
284
284
  .meta({
285
285
  description:
286
- 'The spending limit on each token. Defaults to the cap of each token that the scopes call, else of OUSD, for a first-party app, and a third-party app must name them.',
286
+ 'The spending limit for each token. Defaults to the headless ceiling for a first-party app, and is required for a third-party app.',
287
287
  }),
288
288
  /** The access key's public key. */
289
289
  publicKey: z.optional(hex).meta({
290
290
  description:
291
- "The access key's uncompressed public key, as hex. Tempo ID derives `address` from it when `address` is absent.",
291
+ "The access key's uncompressed public key, as hex. Required without `address`.",
292
292
  examples: [
293
293
  '0x0438ef39ed22456a6956f380ebc18c50bd18c0402658bc52903817cc8a1e8b2f7ed1da68afc7f343c1debc44c04ac60e62e96bbb261d2226e7a7b96e64fd0f0765',
294
294
  ],
@@ -301,17 +301,17 @@ const sent = z.object({
301
301
  z.object({
302
302
  address: address.meta({
303
303
  description:
304
- 'The contract the key may call, such as a TIP-20 token or the TIP-1034 channel reserve at `0x4d50500000000000000000000000000000000000`.',
304
+ 'The contract that the key can call, such as a TIP-20 token or the TIP-1034 channel reserve.',
305
305
  examples: ['0x20c0000000000000000000006a37DA5C996874BE'],
306
306
  }),
307
307
  recipients: z.optional(z.array(address).readonly()).meta({
308
308
  description:
309
- 'The only addresses the call may name as recipient or spender. Required for `approve`, and refused on any call but `transfer`, `transferWithMemo`, and `approve` on a TIP-20 token.',
309
+ 'The only recipients or spenders that the call can name. Required for `approve`, and valid only for `transfer`, `transferWithMemo`, and `approve`.',
310
310
  examples: [['0xff5deded16eb46018387144ff8bf41f26afb41af']],
311
311
  }),
312
312
  selector: z.optional(z.union([hex, z.string().max(256)])).meta({
313
313
  description:
314
- 'The function the key may call, as a 4-byte selector or a function signature. Absent, the key may call any function on the contract, which a TIP-20 token refuses, and the target takes no other scope. A headless flow accepts only `transfer`, `transferWithMemo`, and `approve` on a listed token, and `open` and `topUp` on the channel reserve, unless the app holds `tempo-id:sign`.',
314
+ 'The function that the key can call, as a 4-byte selector or a function signature. Absent to allow any function, which a TIP-20 token refuses.',
315
315
  examples: ['0xa9059cbb', 'transfer(address,uint256)'],
316
316
  }),
317
317
  }),
@@ -320,7 +320,7 @@ const sent = z.object({
320
320
  )
321
321
  .meta({
322
322
  description:
323
- 'The calls the key may make. Defaults to `transfer` and `transferWithMemo` on each token that the key limits for a first-party app, and a third-party app must name them.',
323
+ 'The calls that the key can make. Defaults to `transfer` and `transferWithMemo` on each limited token for a first-party app, and is required for a third-party app.',
324
324
  }),
325
325
  })
326
326
 
@@ -335,7 +335,7 @@ export namespace schema {
335
335
  /** An app's key authorization request, with the headless ceiling as its defaults. */
336
336
  export const request = z.optional(sent.transform(defaults)).meta({
337
337
  description:
338
- "A key authorization for the app's own key: the shape of the Accounts SDK's `wallet_connect` `authorizeAccessKey` capability. Omitted fields default to the headless ceiling.",
338
+ "A request to authorize the app's own access key on the user's Tempo Account, in the shape of the Accounts SDK's `authorizeAccessKey` capability.",
339
339
  id: 'KeyAuthorizationRequest',
340
340
  })
341
341
 
@@ -343,8 +343,7 @@ export namespace schema {
343
343
  export const description = z
344
344
  .object({
345
345
  account: address.optional().meta({
346
- description:
347
- 'The Tempo Account the request names. Absent when the request names none.',
346
+ description: 'The Tempo Account that the request names, if any.',
348
347
  examples: ['0x9a073914db0d149375ac2b7fbb72c68c0780fb5f'],
349
348
  }),
350
349
  calls: z
@@ -352,7 +351,7 @@ export namespace schema {
352
351
  z.object({
353
352
  call: z.enum(['open', 'topUp']).meta({
354
353
  description:
355
- 'The call on the channel reserve, which MPP sessions pay through: `open` starts a payment channel, and `topUp` adds to its deposit.',
354
+ 'The call on the channel reserve: `open` starts a payment channel, and `topUp` adds to its deposit.',
356
355
  examples: ['open', 'topUp'],
357
356
  }),
358
357
  }),
@@ -360,7 +359,7 @@ export namespace schema {
360
359
  .readonly()
361
360
  .meta({
362
361
  description:
363
- 'The calls on the channel reserve, in the order of the scopes, which the screens list beside the limits. Transfers and approvals spend within the limits, so none is listed.',
362
+ 'The calls on the channel reserve, in the order of the scopes. Transfers and approvals are not listed, since the limits cover them.',
364
363
  }),
365
364
  expiry: z.number().meta({
366
365
  description: 'Unix seconds.',
@@ -374,8 +373,7 @@ export namespace schema {
374
373
  examples: ['1000'],
375
374
  }),
376
375
  currency: z.string().meta({
377
- description:
378
- "The tokens' currency, such as `USD`. A yield-bearing token names its own.",
376
+ description: "The tokens' currency, such as `USD`.",
379
377
  examples: ['USD'],
380
378
  }),
381
379
  period: z
@@ -383,7 +381,7 @@ export namespace schema {
383
381
  .optional()
384
382
  .meta({
385
383
  description:
386
- 'Seconds after which the amount resets. Omitted for a one-time limit.',
384
+ 'The seconds after which the amount resets. Absent for a one-time limit.',
387
385
  examples: [86400],
388
386
  }),
389
387
  tokens: z
@@ -426,7 +424,7 @@ export namespace schema {
426
424
  .readonly()
427
425
  .meta({
428
426
  description:
429
- 'The calls that Tempo ID does not recognize, which the screens warn about. Empty when it recognizes every call.',
427
+ 'The calls that Tempo ID does not recognize, which the screens warn about.',
430
428
  }),
431
429
  })
432
430
  .meta({
@@ -455,8 +453,7 @@ export namespace schema {
455
453
  description: 'A secp256k1 ECDSA signature.',
456
454
  }),
457
455
  v: hex.optional().meta({
458
- description:
459
- 'The legacy recovery value, which `yParity` replaces. Absent in most envelopes.',
456
+ description: 'The legacy recovery value, which `yParity` replaces.',
460
457
  examples: ['0x1c'],
461
458
  }),
462
459
  yParity: hex.meta({
@@ -557,7 +554,7 @@ export namespace schema {
557
554
  .optional()
558
555
  .meta({
559
556
  description:
560
- 'The Tempo Account the key is bound to (TIP-1049). Absent or null when the key has no account binding.',
557
+ 'The Tempo Account that the key is bound to (TIP-1049), or absent or `null`.',
561
558
  examples: ['0x9a073914db0d149375ac2b7fbb72c68c0780fb5f'],
562
559
  }),
563
560
  allowedCalls: z
@@ -572,7 +569,7 @@ export namespace schema {
572
569
  .optional()
573
570
  .meta({
574
571
  description:
575
- 'The only addresses the call may name as recipient or spender. Absent when any address may receive.',
572
+ 'The only recipients or spenders that the call can name. Absent to allow any address.',
576
573
  examples: [
577
574
  ['0xff5deded16eb46018387144ff8bf41f26afb41af'],
578
575
  ],
@@ -588,7 +585,7 @@ export namespace schema {
588
585
  .optional()
589
586
  .meta({
590
587
  description:
591
- 'The functions the key may call on the target. Absent when the key may call any function on it.',
588
+ 'The functions that the key can call on the target. Absent to allow any function.',
592
589
  }),
593
590
  target: address.meta({
594
591
  description: 'The contract the key may call.',
@@ -600,7 +597,7 @@ export namespace schema {
600
597
  .optional()
601
598
  .meta({
602
599
  description:
603
- 'The calls the key may make. Absent when the key may make any call.',
600
+ 'The calls that the key can make. Absent to allow any call.',
604
601
  }),
605
602
  chainId: hex.meta({
606
603
  description: 'The chain ID the key acts on, as a hex quantity.',
@@ -611,7 +608,7 @@ export namespace schema {
611
608
  .optional()
612
609
  .meta({
613
610
  description:
614
- 'When the key expires, in Unix seconds, as a hex quantity. Absent or null when the key never expires.',
611
+ 'When the key expires, in Unix seconds, as a hex quantity. Absent or `null` if it never expires.',
615
612
  examples: ['0x6acdc1b4'],
616
613
  }),
617
614
  keyId: address.meta({
@@ -620,7 +617,7 @@ export namespace schema {
620
617
  }),
621
618
  keyType: z.string().meta({
622
619
  description:
623
- 'The signature scheme of the access key: `secp256k1`, `p256`, or `webAuthn`. The node names a configurable account key `multisig`.',
620
+ 'The signature scheme of the access key, or `multisig` for a configurable account key.',
624
621
  examples: ['secp256k1'],
625
622
  }),
626
623
  limits: z
@@ -628,12 +625,12 @@ export namespace schema {
628
625
  z.object({
629
626
  limit: hex.meta({
630
627
  description:
631
- 'The most of the token the key may spend, in base units, as a hex quantity. Applies per period when `period` is set.',
628
+ 'The maximum amount of the token that the key can spend, in base units, as a hex quantity. With `period`, the maximum for each period.',
632
629
  examples: ['0x989680'],
633
630
  }),
634
631
  period: hex.optional().meta({
635
632
  description:
636
- 'Seconds after which the limit resets, as a hex quantity. Absent or `0x0` for a one-time limit.',
633
+ 'The seconds after which the limit resets, as a hex quantity. Absent or `0x0` for a one-time limit.',
637
634
  examples: ['0x15180'],
638
635
  }),
639
636
  token: address.meta({
@@ -646,7 +643,7 @@ export namespace schema {
646
643
  .optional()
647
644
  .meta({
648
645
  description:
649
- 'The spending limit on each token, or absent when spending is unlimited. An empty list allows no spending.',
646
+ 'The spending limit for each token. Absent for no limit, and empty to allow no spending.',
650
647
  }),
651
648
  signature: z
652
649
  .union([
@@ -662,7 +659,7 @@ export namespace schema {
662
659
  .object({
663
660
  keyId: address.optional().meta({
664
661
  description:
665
- 'The address of the access key that signed. Recovered from `signature` when absent.',
662
+ 'The address of the access key that signed. Absent to recover it from `signature`.',
666
663
  examples: ['0x624f27c462b885a83c698cac444a106a8c519e25'],
667
664
  }),
668
665
  signature: primitive.meta({
@@ -67,6 +67,40 @@ const info = {
67
67
  version: '0.0.0',
68
68
  } as const
69
69
 
70
+ /**
71
+ * The document's route groups, in the order the reference lists them. Each description names the
72
+ * requests of the group's flow in order.
73
+ */
74
+ const tags = [
75
+ {
76
+ description:
77
+ 'Sign-in with an emailed code or a passkey, in two requests each. The first returns a code or WebAuthn options, and the second verifies it and sets the session cookie.',
78
+ name: 'Authenticate',
79
+ },
80
+ {
81
+ description:
82
+ 'Authorizes an app for the signed-in user. The redirect flow starts at `GET /oauth2/authorize` and ends at `POST /oauth2/token`, and a first-party page can use `POST /v1/authorize` without a redirect.',
83
+ name: 'Authorization',
84
+ },
85
+ {
86
+ description:
87
+ 'Authorizes a device without a browser (RFC 8628). The device requests codes, the user approves the user code on the device page, and the device polls `POST /oauth2/token`.',
88
+ name: 'Device grant',
89
+ },
90
+ {
91
+ description:
92
+ "The signed-in user's Tempo Accounts and passkeys. A passkey registers in three requests: the options, the new credential, and the new passkey's signature.",
93
+ name: 'Account',
94
+ },
95
+ {
96
+ description:
97
+ "The issuer's standard OAuth 2.0 and OpenID Connect endpoints.",
98
+ name: 'OAuth',
99
+ },
100
+ { description: "The Worker's status.", name: 'Health' },
101
+ { description: 'This document and its API reference.', name: 'Reference' },
102
+ ]
103
+
70
104
  /**
71
105
  * Returns the OpenAPI document for `app`, generated on the first call. The document is reused for
72
106
  * the life of the isolate, since routes do not change while it runs. Every refusal joins its
@@ -295,6 +329,7 @@ async function generate(app: Hono<any, any, any>) {
295
329
  },
296
330
  info,
297
331
  openapi: '3.1.0',
332
+ tags,
298
333
  },
299
334
  })
300
335
  }
@@ -11,6 +11,7 @@ import type { Account, AccountConfig } from 'viem/tempo'
11
11
  import { sql } from 'drizzle-orm'
12
12
  import type * as Auth from './Auth.js'
13
13
  import type * as ErrorResponse from './ErrorResponse.js'
14
+ import type * as Log from './Log.js'
14
15
  import type * as Privy from './Privy.js'
15
16
  import type * as Realm from './Realm.js'
16
17
  import type * as Timing from './Timing.js'
@@ -78,6 +79,21 @@ export declare namespace Kind {
78
79
  type Options = {
79
80
  /** The database or transaction to read. */
80
81
  db: Realm.Database
82
+ /**
83
+ * How old, in seconds, a cached read of an upstream service, such as Privy, may be. Absent,
84
+ * a kind reads its upstream service.
85
+ */
86
+ maxAge?: number | undefined
87
+ /**
88
+ * Keeps background work alive after the response, such as a store in a cache. Absent, a
89
+ * kind waits for that work.
90
+ */
91
+ waitUntil?: ((promise: Promise<unknown>) => void) | undefined
92
+ /**
93
+ * Logs a recoverable problem with the request's details, such as a failure of a cache.
94
+ * Absent, a kind logs without them.
95
+ */
96
+ warn?: ((options: Log.Options) => void) | undefined
81
97
  }
82
98
  }
83
99
  }